IF exists(SELECT * FROM dbo.sysobjects WHERE name='r_XMLhoudingrapportCijfers' AND xtype='P') 
BEGIN
	DROP PROCEDURE r_XMLhoudingrapportCijfers
END
GO

CREATE     procedure r_XMLhoudingrapportCijfers(@inschrijvingsNr char(7), 
		@jaar int)
as
set nocount on

declare @aantalPeriodes int
set @inschrijvingsNr = isNull(@inschrijvingsNr,'')
set @jaar = isNull(@jaar,0)
set @aantalPeriodes = 3

declare @achternaam varchar(50), @voornaam varchar(50), @klas varchar(5)
select @achternaam = achternaam, 
	@voornaam = voornaam,
	@klas = klas
from leerlingen..leerlingen 
where inschrijvingsnr = @inschrijvingsnr

set @achternaam = isNull(@achternaam,'')
set @voornaam = isNull(@voornaam,'')
set @klas = isNull(@klas,'')

create table #tussen(tekst varchar(8000))
create table #vakken(volgNummer char(2),vak varchar(2),vakNaam varchar(50))
create table #codes(categorie varchar(20), periode int)
create table #cijfers(vak varchar(2),periode int, categorie varchar(20),cijfer varchar(3))
create table #groepen(groepscode varchar(5))

-- De vakken en codes worden ingevuld:

insert into #vakken(volgNummer,vak,vaknaam)
select distinct volgnummer,vakcode,vaknaam
  from leraars.dbo.alleIndividueleVakcodes(@inschrijvingsNr)
  order by volgnummer


insert into #codes(categorie,periode)
select distinct categorie,periode from r_houdingcijfers
where inschrijvingsNr in 
		(select inschrijvingsNr 
			from leerlingen..leerlingen 
			where klas = @klas)

--Alle cijfers worden ingetikt.

insert into #cijfers(vak,periode,categorie,cijfer)
select v.vak,c.periode, c.categorie,'-' from
      #vakken as v cross join #codes as c

update #cijfers
set cijfer = r.cijfer
from (select * from r_houdingcijfers where inschrijvingsNr = @inschrijvingsNr) as r
left join #cijfers as c
  on r.vak = c.vak
	and r.categorie = c.categorie
	and r.periode = c.periode 

-----------------  OPBOUW DOCUMENT  -----------------------------------

-- De juiste stijl-pagina wordt aan de XML-pagina gelinkt.

insert into #tussen(tekst)
values('<?xml version="1.0"  encoding="ISO-8859-1" ?>')

insert into #tussen(tekst)
values('<?xml-stylesheet type="text/xsl" href="houdingRapport' + 
	convert(varchar(2),@aantalPeriodes) + '.xsl" ?>')

-- De titel en de 
insert into #tussen(tekst)
values('<houdingRapport><hoofding><titel>Houdingresultaten ' 
	+ @voornaam + ' ' + @achternaam
	+ '</titel>')

insert into #tussen(tekst)
values('<leerling>' + @voornaam + ' ' + @achternaam + '</leerling>')
insert into #tussen(tekst)
values('<comBestand>' + @inschrijvingsNr + 'c.xml</comBestand>')
insert into #tussen(tekst)
values('<periode>Attituderapport schooljaar ' + convert(varchar(4),@jaar) + ' - ' +
	+ convert(varchar(4),@jaar + 1) + '</periode>')
insert into #tussen(tekst)
values('</hoofding><vakken>')

-- De vakresultaten van de leerling worden ingevoegd
declare @periode int
declare @vak varchar(5)
declare @vaknaam varchar(50)

declare vakCursor cursor local for 
select vak,vaknaam from #vakken
for read only
open vakCursor
fetch next from vakCursor into @vak,@vaknaam
while (@@fetch_status=0)	
  begin
    insert into #tussen(tekst)
    select '<vak naam="' + @vaknaam + '">'
    set @periode = 1

    while @periode <= @aantalPeriodes 
	begin 
	  insert into #tussen(tekst)
	  values('<periode nr="' + convert(varchar(2),@periode) + '">')		

          insert into #tussen(tekst)
	  select '<c naam="' + categorie + '">' + cijfer + '</c>'
  	  from #cijfers as c
	       where vak = @vak and
			periode = @periode
		order by categorie
	  insert into #tussen(tekst)
		  values('</periode>')
          set @periode = @periode + 1
	end
    insert into #tussen(tekst)
    values('</vak>')
    fetch next from vakCursor into @vak,@vaknaam
  end  

-- Afsluiting
insert into #tussen(tekst)
values('</vakken></houdingRapport>')

select * from #tussen